// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

#include "ctest.h"

#define TEST_ENUM_VALUES \
    TEST_ENUM_VALUE_A, \
    TEST_ENUM_VALUE_B

MU_DEFINE_ENUM(TEST_ENUM, TEST_ENUM_VALUES)
MU_DEFINE_ENUM_STRINGS(TEST_ENUM, TEST_ENUM_VALUES)
CTEST_DEFINE_ENUM_TYPE(TEST_ENUM, TEST_ENUM_VALUES)

#define TEST_ENUM_2_VALUES \
    TEST_ENUM_2_VALUE_A = 0, \
    TEST_ENUM_2_VALUE_B = 1

MU_DEFINE_ENUM(TEST_ENUM_2, TEST_ENUM_2_VALUES)
MU_DEFINE_ENUM_STRINGS(TEST_ENUM_2, TEST_ENUM_2_VALUES)
CTEST_DEFINE_ENUM_TYPE(TEST_ENUM_2, TEST_ENUM_2_VALUES)

CTEST_BEGIN_TEST_SUITE(enum_define_tests)

CTEST_FUNCTION(Compare_enum_exists)
{
    CTEST_ASSERT_ARE_EQUAL(TEST_ENUM, TEST_ENUM_VALUE_A, TEST_ENUM_VALUE_A);
}

CTEST_FUNCTION(ToString_gets_used)
{
    CTEST_ASSERT_ARE_EQUAL(TEST_ENUM, TEST_ENUM_VALUE_A, TEST_ENUM_VALUE_B);
}

CTEST_FUNCTION(Compare_enum_2_Exists)
{
    CTEST_ASSERT_ARE_EQUAL(TEST_ENUM_2, TEST_ENUM_2_VALUE_A, TEST_ENUM_2_VALUE_A);
}

CTEST_FUNCTION(ToString_for_enum_2_gets_used)
{
    CTEST_ASSERT_ARE_EQUAL(TEST_ENUM_2, TEST_ENUM_2_VALUE_A, TEST_ENUM_2_VALUE_B);
}

CTEST_END_TEST_SUITE(enum_define_tests)
